[Looker入門] LookMLの用語と概念 #looker
LookMLを開発するにあたって知っておきたい基礎の基礎、LookMLプロジェクトの構成やモデルとExploreの関わりをご紹介します。
LookML terms and concepts from Looker on Vimeo.
元ネタはこちらの動画です。さまざまなLookMLの概念の紹介を見てきましたが、こちらが一番よくまとめられていると感じました。
しかし、こちらの動画は全編英語のため本記事では日本語で噛み砕いてご紹介します。
LookML用語と概念
一番シンプルなLookMLの構成図です。後で詳しく触れますが、LookMLプロジェクトを大枠にしてその中にモデルとビューがあります。モデルにはexploreとjoinが定義されていて、ビューにはディメンションとメジャーが定義されています。こちらの図にはLookMLダッシュボードがありますがオプショナルなので、必須ではありません。
LookMLプロジェクト
LookMLを開発する際に最初に作る箱をLookerではプロジェクトと呼びます。プロジェクトは複数のLookMLファイルで構成されており、主なものはモデルファイルとビューファイルです。
このほかにもLookMLファイルがありますが、最低限必要なファイルはこの2種類のファイルです。
その他のLookMLプロジェクトファイルはこちらの公式ドキュメントで確認できます:Understanding other project files - 公式ドキュメント
モデル・モデルファイル
LookMLプロジェクトを構成するファイルの内の一つ、モデルファイルについてご説明します。
モデルファイルにはモデル全体に関わる設定を定義します。
最低限必要なものはexploreとデータベース接続の定義です。
モデルファイルにはどのデータベースと接続するかを指定します。モデルファイルに指定できるデータベース接続は1つだけです。
モデルファイルがそのままLookMLのモデルオブジェクトとなるため、1モデル1データベース接続ということになります。
1つのLookMLプロジェクトに複数のモデルを定義することができます。(1プロジェクトに複数のモデルファイルを保存することができます。)
これの何が嬉しいかというと、Lookerではモデル単位でユーザーグループのアクセス権限を管理するので、モデルを切り離しておくことで1プロジェクトで複数のユーザーグループ向けの開発ができるようになります。プロジェクト間でファイルの共有はできないため、複数のユーザーグループにそれぞれ閲覧権限を渡さずに公開したい場合はプロジェクトを切り分けるのではなく、モデルを切り分けることでシンプルに実現できます。
この他モデルに定義するものはこちらの公式ドキュメントで確認できます:モデルパラメーター - 公式ドキュメント
explore/Explore
モデルにexploreを定義すると、Exploreメニューに表示されます。
Exploreはユーザーが欲しいデータにアクセスして、データを可視化する場所です。
画面左の項目を選択すると裏でSQLが生成される仕組みになっています。
exploreはLookerが生成するSQLでFROM句になります。
ビュー・ビューファイル
LookMLプロジェクトを構成するファイルの内のもう一つ、ビューファイルについてご説明します。
ビューはデータベースのテーブルをLookMLオブジェクトにしたものです。データベースに物理的に存在しているものもあれば、Looker上に論理的に作成することもできます。
exploreの定義にはビューが必要です。さらにjoinをすることでビューを結合することができます。(考え方はテーブル同時のjoinとほぼ同じです。)
ここで言うビューとはLookMLオブジェクトとしてのビューで、ビューファイルのことではありません。推奨ではありませんが、ビューファイルには複数のビューを定義することができます。
1つのビューファイルの中に複数のビューが存在してしまう例としてBigQyeryでUNNESTが必要なARRAY型やSTRUCT型でデータが入っているテーブルが挙げられます。このようなテーブルをLookerに取り込むと、一つのビューファイルに複数のビューが生成されます。
話が逸れてしまいましたが、exploreは最低一つ時には複数の結合されたテーブル(たち)で構成されています。
また、joinで定義されたビューはLookerが生成するSQLのJOIN句になります。
ディメンション
ディメンションはテーブルの列をLookMLオブジェクトにしたものです。
ビュー同様データベースのテーブルに物理的に存在しているものもあれば、Looker上に論理的に作成することもできます。
ディメンションはLookerの生成するSQLのGROUP BY句とSELECT句になります。
メジャー
メジャーは集約計算を定義します。
ExcelでもおなじみのCOUNT、SUM、MIN、MAXをはじめとした計算や、Lookerに接続しているデータベースがサポートしている計算を定義することができます。
他のメジャー同士の計算も行うことができます。
この時に可能なのは足し算引き算掛け算割り算といった計算で、集約計算を行ったメジャーに対して同じビューで集約計算のメジャーを書くことはできません。Nested measureというエラーの原因になります。
Exploreにおけるディメンションとメジャー
ビューで定義されたディメンションとメジャーは、フィールドピッカーと呼ばれるExplore画面の左側に表示されます。
ユーザーはそこから必要な項目(フィールド)を選択して欲しい結果を得ます。フィールド(ディメンションとメジャーのこと)をpick(選ぶ)する場所なのでフィールドピッカーと呼ばれます。
マニフェストファイル
プロジェクト全体に関する設定を定義する場所です。1プロジェクトに1つだけマニフェストファイルを作成することができます。
マニフェストファイルで定義できるパラメータはこちらの公式ドキュメントで確認できます:プロジェクトマニフェストパラメーター
LookMLダッシュボードファイル
LookMLダッシュボードファイルはLookMLプロジェクトに紐づいたバージョンコントロールができるダッシュボードのファイルです。YAMLベースでLookMLで開発者によって定義されます。
派生テーブル
ビュー/ビューファイルで紹介した、Looker上に論理的に定義できるテーブルを派生テーブルと呼びます。
具体的には、SQLの結果セットをテーブルとして扱います。
派生テーブルはSQLで言うところのマテリアライズドビュー、common teble expressions(WITH句)、サブクエリの役割を果たします。
メジャーの項目で、集約計算を行ったメジャーに対し同じビュー内では集約計算を行うことはできないとお伝えしました。こういったケースで派生テーブルを使用します。元のビューの集約計算も新たに作成した派生テーブル上ではディメンションになるので、そのディメンションに対してメジャーで集約計算を行います。
通常のビューと違い、sql_table_name
パラメータを定義せず代わりにderived_table
パラメータを定義します。
他のビューと同様にjoinすることができます。
まとめ
LookMLプロジェクトの成り立ちをご理解いただけたでしょうか?
LookMLの開発はデータベースエンジニア的でありながら、ユーザーの触るExploreの開発も含まれるためソフトウェアエンジニア的な側面も併せ持ちます。
この記事がLookML開発に少しでも役立てば幸いです。